package com.xujie.sportsmeeting.service;

import com.xujie.sportsmeeting.vo.*;

import java.util.List;
import java.util.Map;

/**
 * 统计分析服务接口
 */
public interface StatisticsService {

    /**
     * 获取系统概览统计
     */
    SystemOverviewVO getSystemOverview();

    /**
     * 获取个人成绩统计
     */
    AthleteStatisticsVO getAthleteStatistics(Long athleteId);

    /**
     * 获取项目成绩统计
     */
    EventStatisticsVO getEventStatistics(Long eventId);

    /**
     * 获取团体成绩统计(按院系)
     */
    List<TeamStatisticsVO> getDepartmentStatistics();

    /**
     * 获取团体成绩统计(按班级)
     */
    List<TeamStatisticsVO> getClassStatistics(String department);

    /**
     * 获取奖牌榜统计
     */
    List<MedalStatisticsVO> getMedalStatistics(Integer statisticsType);

    /**
     * 获取成绩趋势分析
     */
    List<ScoreTrendVO> getScoreTrend(Long eventId, String timeRange);

    /**
     * 获取参赛情况统计
     */
    ParticipationStatisticsVO getParticipationStatistics();

    /**
     * 获取热门项目统计
     */
    List<EventPopularityVO> getEventPopularityStatistics();

    /**
     * 获取性别参与统计
     */
    GenderStatisticsVO getGenderStatistics();

    /**
     * 获取院系参与度排名
     */
    List<DepartmentParticipationVO> getDepartmentParticipationRanking();

    /**
     * 重新计算团体成绩统计
     */
    boolean recalculateTeamStatistics();

    /**
     * 生成统计报表数据
     */
    Map<String, Object> generateReportData(String reportType, Map<String, Object> params);

    /**
     * 获取实时排行榜
     */
    List<RankingVO> getRealTimeRanking(String rankingType, Integer limit);

    /**
     * 获取成绩分布统计
     */
    ScoreDistributionVO getScoreDistribution(Long eventId);

    /**
     * 获取破纪录统计
     */
    List<RecordBreakingVO> getRecordBreakingStatistics();

    /**
     * 导出统计数据
     */
    byte[] exportStatisticsData(String exportType, Map<String, Object> params);
}
